/*
 * Robot.h
 *
 *      Author: Ben, Philippe, Simon en Tom
 */

#ifndef ROBOT_H_
#define ROBOT_H_

#include <iostream>
#include <stdlib.h>
#include <math.h>
#include <thread>
#include <cmath>
#include "../wifi/package.h"
#include "../wifi/server.h"
using namespace std;

typedef struct Position{
	int x;
	int y;
	float arc;
} position;

class Robot{
public:
	Robot();
	Robot(int tol_arc, int tol_distance);
	///Deze functie leest data van het netwerk team in naar de parameters van deze classe
	void UpdateRobot(Package data);		//meegeven struct van het netwerk team
	///Deze functie leest data van het netwerk team in naar de parameters van deze classe
	void UpdateTarget(Package data);		//meegeven struct van het netwerk team
	/// Deze functie berekend op hoog niveau welke hoek gemaakt moet worden tot het target
	int CalcTurn();		//High level strategie
	/// Deze functie herberekend deze hoek en geeft deze door naar het low level team
	void Turn(int arc);		//Low level strategie
	/// Deze functie berekend op hoog niveau de afstand tot het target
	int CalcDistance();	//High level strategie
	/// Deze functie herberekend dez afstand en geeft deze door naar het low level team
	void Drive(int distance);	//Low level strategie
	/// Destructor Robot
	//~Robot();
private:
	Position me;
	Position target;
	int tolerance_arc;
	int tolerance_distance;
	bool cargo;
};


#endif /* ROBOT_H_ */
